#include <stdio.h>
#include <stdlib.h>

int sumArray(int *arr, int size)
{
  int sum = 0;
  for (int i = 0; i < size; i++)
  {
    sum += *(arr + i);
  }
  return sum;
}

int main()
{
  int size = 5; // 或者使用宏定义或变量保存原始大小
                // size = sizeof(arr) / sizeof(arr[0]);
                // sizeof 运算符对动态分配的数组无法正确返回实际元素个数，只能返回指针大小。
  int *arr = (int *)malloc(5 * sizeof(int));
  if (arr == NULL)
  {
    printf("内存分配失败\n");
    return -1;
  }
  for (int i = 0; i < 5; i++)
  {
    arr[i] = i + 1;
  }
  for (int i = 0; i < 5; i++)
  {
    printf("arr[%d] = %d\n", i, arr[i]);
  }
  printf("数组元素的个数: %d\n", size);
  int sum = sumArray(arr, size);
  printf("数组的总和: %d\n", sum);

  free(arr);
  return 0;
}